class Solution {
public:
    vector<int> singleNumber(vector<int>& nums) {
        //全员异或
        int num=0;
        for(int i=0;i<nums.size();i++)
        {
            num^=nums[i];
        }
        //找出第一位不相同的
        int h=0;
        for(int i=0;i<32;i++)
        {
            if((num&(1<<i)))//注意这个位置也不是==1，如果这一位是1的话结果是>0的而不是正好等于1
            { h=i;break;}
        }
        //分组
        int k=1<<h;
        int num1=0,num2=0;
        for(int i=0;i<nums.size();i++)
        {
            if(nums[i]&k)//注意这不是==1
            {
                num1^=nums[i];
            }
            else 
            {
                num2^=nums[i];
            }
        }
        vector<int> v1;
        v1.push_back(num1);
        v1.push_back(num2);
        return v1;
    }
};